// 导入 axios
import axios from 'axios'
import { BASE_URL } from './url'

// 创建并导出获取定位城市的函数
export const getCurrentCity = () => {
  // 1. 判断 localStorage 中是否有定位城市
  const localCity = JSON.parse(localStorage.getItem('hkzf_city'))
  if (!localCity) {
    // 2. 如果没有，就使用首页中获取定位城市的代码来获取，并且存储到本地存储中，然后返回该城市数据
    return new Promise((resolve, reject) => {
      const curCity = new window.BMapGL.LocalCity()
      curCity.get(async result => {
        try {
          const { data: res } = await axios.get(`${BASE_URL}/area/info?name=${result.name}`)
          // 存储到本地存储中
          localStorage.setItem('hkzf_city', JSON.stringify(res.body))
          resolve(res.body)
        } catch (e) {
          // 获取定位城市失败
          reject(e)
        }
      })
    })
  }
  // 3. 如果有，直接返回本地存储中的城市数据
  // 注：因为上面为了处理异步操作，使用了 Promaise，因此，为了该函数返回值的统一，此处，也应该使用 Promise
  // 因为此处的 Promise 不会失败，所以，此处，只要返回一个成功的 Promise 即可
  return Promise.resolve(localCity)
}

// 初次渲染页面时，获取当前城市
getCurrentCity()

export { API } from './api'
export { BASE_URL } from './url'

// 导出 auth 模块中的所有内容
export * from './auth'

export * from './city'
